home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WFC010.ZIP / INCLUDE / CSVCMGR.HPP < prev    next >
C/C++ Source or Header  |  1995-12-07  |  3KB  |  90 lines

  1. #if ! defined( SERVICE_MANAGER_CLASS_HEADER )
  2.  
  3. /*
  4. ** Author: Samuel R. Blackburn
  5. ** CI$: 76300,326
  6. ** Internet: sammy@sed.csc.com
  7. **
  8. ** You can use it any way you like as long as you don't try to sell it.
  9. **
  10. ** Any attempt to sell WFC in source code form must have the permission
  11. ** of the original author. You can produce commercial executables with
  12. ** WFC but you can't sell WFC.
  13. **
  14. ** Copyright, 1995, Samuel R. Blackburn
  15. **
  16. ** $Workfile: $
  17. ** $Revision: $
  18. ** $Modtime: $
  19. */
  20.  
  21. #define SERVICE_MANAGER_CLASS_HEADER
  22.  
  23. class CServiceNameAndStatusA : public _ENUM_SERVICE_STATUSA
  24. {
  25.    public:
  26.  
  27.       CServiceNameAndStatusA();
  28.       virtual ~CServiceNameAndStatusA();
  29.       virtual void Copy( const _ENUM_SERVICE_STATUSA *source );
  30.       virtual void Empty( void );
  31. };
  32.  
  33. class CServiceNameAndStatusW : public _ENUM_SERVICE_STATUSW
  34. {
  35.    public:
  36.  
  37.       CServiceNameAndStatusW();
  38.       virtual ~CServiceNameAndStatusW();
  39.       virtual void Copy( const _ENUM_SERVICE_STATUSW *source );
  40.       virtual void Empty( void );
  41. };
  42.  
  43. #if defined( UNICODE )
  44. #define CServiceNameAndStatus CServiceNameAndStatusW
  45. #else
  46. #define CServiceNameAndStatus CServiceNameAndStatusA
  47. #endif // UNICODE
  48.  
  49. class CServiceControlManager : public CObject
  50. {
  51.    private:
  52.  
  53.       void m_Initialize( void );
  54.  
  55.    protected:
  56.  
  57.       SC_HANDLE m_ManagerHandle;
  58.  
  59.       ENUM_SERVICE_STATUS *m_Buffer;
  60.  
  61.       DWORD m_BufferSize;
  62.       DWORD m_CurrentEntryNumber;
  63.       DWORD m_ErrorCode;
  64.       DWORD m_NumberOfEntries;
  65.  
  66.       CString m_MachineName;
  67.  
  68.    public:
  69.  
  70.       CServiceControlManager();
  71.       virtual ~CServiceControlManager();
  72.  
  73.       virtual void  Close( void );
  74.       virtual BOOL  Continue( LPCTSTR service_name );
  75.       virtual BOOL  EnumerateStatus( DWORD state = SERVICE_ACTIVE,
  76.                                      DWORD type  = SERVICE_WIN32 );
  77.       virtual DWORD GetErrorCode( void ) const;
  78.       virtual BOOL  GetNext( CServiceNameAndStatus& status );
  79.       virtual BOOL  Install( LPCTSTR service_name, LPCTSTR friendly_name, LPCTSTR name_of_executable_file );
  80.       virtual BOOL  Open( DWORD   what_to_open  = SC_MANAGER_ALL_ACCESS,
  81.                           LPCTSTR database_name = NULL,
  82.                           LPCTSTR machine_name  = NULL );
  83.       virtual BOOL  Pause( LPCTSTR service_name );
  84.       virtual BOOL  Remove( LPCTSTR service_name );
  85.       virtual BOOL  Start( LPCTSTR service_name, DWORD service_argc = 0, LPCTSTR *service_argv = NULL );
  86.       virtual BOOL  Stop( LPCTSTR service_name );
  87. };
  88.  
  89. #endif // SERVICE_MANAGER_CLASS_HEADER
  90.